home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / cg.lha / cg / test-c / Main.c < prev    next >
C/C++ Source or Header  |  1992-11-24  |  3KB  |  121 lines

  1. # include "Tree.h"
  2. # include <stdio.h>
  3. # include "Memory.h"
  4. # include "StringMem.h"
  5. # include "Idents.h"
  6.  
  7. void ErrorCheck (s, n)
  8.    char * s;
  9.    int n;
  10. {  if (n < 0) (void) printf ("Error: %s, Code: %d\n", s, n); }
  11.  
  12. void PrintMark (t)
  13.    tTree t;
  14. {  (void) printf ("%d ", t->Node.Mark); }
  15.  
  16. main ()
  17. {
  18.    tTree n, n1, n2, n3, n4, n5, Root1, Root2, Root3;
  19.    FILE * f;
  20.    int i;
  21.  
  22.    InitMemory        ();
  23.    InitStringMemory    ();
  24.    InitIdents        ();
  25.    BeginTree        ();
  26.  
  27.    n1 = nNode2 ();
  28.    n2 = nNode2 ();
  29.    n3 = nNode1 ();
  30.    n4 = nNode1 ();
  31.    n5 = nNode1 ();
  32.  
  33.    n1->Node.Mark = 1;
  34.    n2->Node.Mark = 2;
  35.    n3->Node.Mark = 3;
  36.    n4->Node.Mark = 4;
  37.    n5->Node.Mark = 5;
  38.  
  39.    n1->Node.Ident = MakeIdent ((tString ) "1", 1);
  40.    n2->Node.Ident = MakeIdent ((tString ) "2", 1);
  41.    n3->Node.Ident = MakeIdent ((tString ) "3", 1);
  42.    n4->Node.Ident = MakeIdent ((tString ) "4", 1);
  43.    n5->Node.Ident = MakeIdent ((tString ) "5", 1);
  44.  
  45.    n1->Node.Hex = 1;
  46.    n2->Node.Hex = 2;
  47.    n3->Node.Hex = 3;
  48.    n4->Node.Hex = 4;
  49.    n5->Node.Hex = 5;
  50.  
  51.    n = n1;
  52.    n1->Node2.Child1 = n2;
  53.    n1->Node2.Child2 = n2;
  54.    n2->Node2.Child1 = n3;
  55.    n2->Node2.Child2 = n5;
  56.    n3->Node1.Child1 = n4;
  57.    n4->Node1.Child1 = n3;
  58.    n5->Node1.Child1 = n5;
  59.  
  60.    f = fopen        ("a", "w");
  61.    ErrorCheck        ("fopen (a, w)", (int) f);
  62.    (void) printf    ("fopen (a, w)\n");
  63.    WriteTree        (f, n);
  64.    (void) fclose    (f);
  65.  
  66.    f = fopen        ("a", "r");
  67.    ErrorCheck        ("fopen (a, r)", (int) f);
  68.    (void) printf    ("fopen (a, r)\n");
  69.    Root1 = ReadTree    (f);
  70.    (void) fclose    (f);
  71.  
  72.    f = fopen        ("b", "w");
  73.    ErrorCheck        ("fopen (b, w)", (int) f);
  74.    (void) printf    ("fopen (b, w)\n");
  75.    PutTree        (f, Root1);
  76.    (void) fclose    (f);
  77.  
  78.    f = fopen        ("b", "r");
  79.    ErrorCheck        ("fopen (b, r)", (int) f);
  80.    (void) printf    ("fopen (b, r)\n");
  81.    Root2 = GetTree    (f);
  82.    (void) fclose    (f);
  83.  
  84.    f = fopen        ("aa", "w");
  85.    ErrorCheck        ("fopen (aa, w)", (int) f);
  86.    (void) printf    ("fopen (aa, w)\n");
  87.    WriteTree        (f, Root2);
  88.    (void) fclose    (f);
  89.  
  90.    f = fopen        ("bb", "w");
  91.    ErrorCheck        ("fopen (bb, w)", (int) f);
  92.    (void) printf    ("fopen (bb, w)\n");
  93.    PutTree        (f, Root2);
  94.    (void) fclose    (f);
  95.  
  96.    Root3 = CopyTree    (Root2);
  97.    f = fopen        ("aaa", "w");
  98.    ErrorCheck        ("fopen (aaa, w)", (int) f);
  99.    (void) printf    ("fopen (aaa, w)\n");
  100.    WriteTree        (f, Root3);
  101.    (void) fclose    (f);
  102.  
  103.    i = system        ("set -x; cmp a aa; cmp b bb; cmp a aaa");
  104.    ErrorCheck        ("system", i);
  105.  
  106.    (void) printf    ("should print:\n1 2 3 4 5 4 3 5 2 1 \n");
  107.    TraverseTreeTD    (Root2, PrintMark);
  108.    TraverseTreeBU    (Root2, PrintMark);
  109.    (void) printf    ("\n");
  110.  
  111.    (void) CheckTree    (Root3);
  112.  
  113.    (void) printf    ("should print:\n4 3 5 2 1 \n");
  114.    ReleaseTree        (Root3);
  115.    (void) printf    ("\n");
  116.    ReleaseTreeModule    ();
  117.    CloseTree        ();
  118.  
  119.    return 0;
  120. }
  121.